package com.pocketsweet.ui.uilib;

import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.Display;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

import com.pocketsweet.R;
import com.pocketsweet.service.UserService;

public class SendGiftDialog implements DialogInterface.OnKeyListener {
    private Context context;
    private Dialog dialog;
    private LinearLayout lLayout_bg;
    private TextView txt_title;
    private TextView tvPrice;
    private TextView tvGiftInfo;
    private ImageView dialog_marBottom;
    private ImageView giftImage;
    private Button btn_neg;
    private Button btn_pos;
    private ImageView img_line;
    private Display display;
    private boolean showPosBtn = false;
    private boolean showNegBtn = false;
    private onBacklistener l;

    public SendGiftDialog(Context context) {
        this.context = context;
        WindowManager windowManager = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        display = windowManager.getDefaultDisplay();
    }

    public SendGiftDialog builder() {
        View view = LayoutInflater.from(context).inflate(
                R.layout.toast_send_gift_dialog, null);

        lLayout_bg = (LinearLayout) view.findViewById(R.id.lLayout_bg);
        txt_title = (TextView) view.findViewById(R.id.txt_title);
        txt_title.setVisibility(View.GONE);
        tvPrice = (TextView) view.findViewById(R.id.tvPrice);
        tvGiftInfo = (TextView) view.findViewById(R.id.tvGiftInfo);
        dialog_marBottom = (ImageView) view.findViewById(R.id.dialog_marBottom);
        giftImage = (ImageView) view.findViewById(R.id.giftImage);
        btn_neg = (Button) view.findViewById(R.id.btn_neg);
        btn_pos = (Button) view.findViewById(R.id.btn_pos);
        dialog = new Dialog(context, R.style.AlertDialogStyle);
        dialog.setContentView(view);
        lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display
                .getWidth() * 0.8), LayoutParams.WRAP_CONTENT));

        return this;
    }

    public SendGiftDialog setTitle(String title) {
        if ("".equals(title)) {
            txt_title.setText("");
        } else {
            txt_title.setText(title);
        }
        return this;
    }

    public SendGiftDialog setGiftImg(String drawable) {
        giftImage.setVisibility(View.VISIBLE);
        UserService.displaySquare(drawable, giftImage);
        return this;
    }

    public SendGiftDialog setPrice(String msg) {
        if ("".equals(msg)) {
            tvPrice.setText("");
        } else {
            tvPrice.setText(msg);
        }
        return this;
    }

    public SendGiftDialog setInfo(String msg) {
        if ("".equals(msg)) {
            tvGiftInfo.setText("");
        } else {
            tvGiftInfo.setText(msg);
        }
        return this;
    }

    public SendGiftDialog setCancelable(boolean cancel) {
        dialog.setCancelable(cancel);
        return this;
    }

    public SendGiftDialog setPositiveButton(String text,
                                            final OnClickListener listener) {
        showPosBtn = true;
        if ("".equals(text)) {
            btn_pos.setText("ȷ��");
        } else {
            btn_pos.setText(text);
        }
        btn_pos.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                listener.onClick(v);
                dialog.dismiss();
            }
        });
        return this;
    }

    public SendGiftDialog setNegativeButton(String text,
                                            final OnClickListener listener) {
        showNegBtn = true;
        if ("".equals(text)) {
            btn_neg.setText("ȡ��");
        } else {
            btn_neg.setText(text);
        }
        btn_neg.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                listener.onClick(v);
                dialog.dismiss();
            }
        });
        return this;
    }

    private void setLayout() {
        txt_title.setVisibility(View.VISIBLE);

        if (!showPosBtn && !showNegBtn) {
            btn_pos.setText("ȷ��");
            btn_pos.setVisibility(View.VISIBLE);
            btn_pos.setBackgroundResource(R.drawable.alertdialog_single_selector);
            btn_pos.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });
        }

        if (showPosBtn && showNegBtn) {
            btn_pos.setVisibility(View.VISIBLE);
            btn_pos.setBackgroundResource(R.drawable.alertdialog_right_selector);
            btn_neg.setVisibility(View.VISIBLE);
            btn_neg.setBackgroundResource(R.drawable.alertdialog_left_selector);
            // img_line.setVisibility(View.VISIBLE);
        }

        if (showPosBtn && !showNegBtn) {
            btn_pos.setVisibility(View.VISIBLE);
            btn_pos.setBackgroundResource(R.drawable.alertdialog_single_selector);
        }

        if (!showPosBtn && showNegBtn) {
            btn_neg.setVisibility(View.VISIBLE);
            btn_neg.setBackgroundResource(R.drawable.alertdialog_single_selector);
        }
    }

    public void show() {
        setLayout();
        dialog.show();
    }

    @Override
    public boolean onKey(DialogInterface arg0, int keyCode, KeyEvent arg2) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (l != null) {
                l.onBack();
                return false;
            }
        }
        return false;
    }

    public void setOnbackListener(onBacklistener listener) {
        l = listener;
    }

    public interface onBacklistener {
        public void onBack();
    }
}
